package org.example.utils;

import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.example.domain.GoodsContent;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

import java.net.URL;
import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 使用Jsoup解析网页数据获取数据
 */
public class ParseHtmlUtil {

    //这里只针对京东搜索，如果需要改变url，请自行去查看网页构造结构，然后修改结构；
    //固定的url，后续只需要拼接对应的关键字即可
    private static final String BASE_URL = "https://search.jd.com/Search?keyword=";

    //当然如果这么写，每次都只能解析第一页的数据，所以如果要获取不同页面的数据，就可以通过循环来操作，这里有兴趣的朋友可以自行改造
    // private static final String BASE_URL = https://search.jd.com/Search?keyword=java&page=5

    /**
     * 按照 【关键词】搜索，并且返回具体的数据
     *
     * @param keyword 关键词
     * @return 一个装载GoodsContent的list
     */

    public static List<GoodsContent> parseHtml(String keyword) throws Exception {
//
//        String url = BASE_URL + keyword;
//
//        List<GoodsContent> list = new ArrayList<>();
//        try {
//
//            //获取浏览器Document对象,设置超时时间为30s
//            final Document document = Jsoup.parse(new URL(url), 30000);
//
//            //通过此对象就可以解析网页标签结构，得到想要的信息；所以你需要做的就是分析网页结构
//
//            //这就是刚刚我们定位到的【京东商品信息存放地方】
//            final Elements elements = document.getElementById("J_goodsList").getElementsByTag("li");
//
//            //进一步处理数据，把我们想要得数据给拿出来
//            for (Element element : elements) {
//
//                final String price = element.getElementsByClass("p-price").eq(0).text();
//                final String title = element.getElementsByClass("p-name").eq(0).text();
//                //图片如果直接找img src路径是获取不到的，因为类似京东这样子的网站，图片如此之多，肯定需要做懒加载，不然加载就会非常的慢
//                //网页上在数据未加载完成的时候，可能只会存放一张静态的图片，等到数据获取回来，才会渲染上去，所以这里需要获取真正存放这个图片的路径
//                final String img = element.getElementsByTag("img").eq(0).attr("data-lazy-img");
//
//                GoodsContent goods = new GoodsContent();
//                goods.setImg(img);
//                goods.setTitle(title);
//                goods.setPrice(price);
//
//                list.add(goods);
//            }
//
//        } catch (Exception e) {
//            System.err.println("爬去数据失败，请检查原因...");
//            e.printStackTrace();
//        }
//
//        return list;
//    }



        //获取请求https://search.jd.com/Search?keyword=java
        String url = "https://search.jd.com/Search?keyword=" + keyword + "&enc=utf-8";
        //解析网页(就是js页面对象)



        Document document = Jsoup.parse(new URL(url), 30000);
        System.out.println(document);
        Element element = document.getElementById("J_goodsList");
        System.out.println(element.html());
        Elements elements = element.getElementsByTag("li");

        ArrayList<GoodsContent> contents = new ArrayList<>();
        for (Element el : elements) {
            //图片地址
//            String img = el.getElementsByTag("img").eq(0).attr("src");
            String price = el.getElementsByClass("p-price").eq(0).text();
            String title = el.getElementsByClass("p-name").eq(0).text();
//            System.out.println("======================");
//            System.out.println(img);
//            System.out.println(price);
//            System.out.println(title);
            GoodsContent content = new GoodsContent();
//            content.setImg(img);
            content.setTitle(title);
            content.setPrice(price);
            contents.add(content);
        }
        return contents;
    }
}